/*
 *  POJ1001: Exponentiation
 */

/*-------- Includes --------*/
#include <iostream>
#include <cstring>

/*-------- Defines --------*/
#define MAX_SIZE 256

/*-------- Using --------*/
using namespace std;

/*-------- Main Function --------*/
int main(int argc, char const *argv[])
{
    char R[8];
    int  n;

    int base[8] = {0};
    int nbase   = 0;
    int nfrac   = 0;

    int rega[MAX_SIZE] = {0};
    int regb[MAX_SIZE] = {0};

    while (cin >> R >> n) {
        // Step 1: string number to big number
        int i, j;

        // initialize
        nbase = 0;
        nfrac = 0;

        // cut off tailing zeros
        for (i = strlen(R) - 1; R[i] == '0'; i--) R[i] = '\0';

        for (i = strlen(R) - 1, j = 0; i >= 0; i--) {
            if (R[i] == '.') nfrac     = j;
            else             base[j++] = R[i] - '0';
        }

        nfrac *= n;

        // cut off leading zeros
        if (base[j - 1] == 0) nbase = j - 1;
        else                  nbase = j;

        // Step 2: calculate
        int *p, *q;
        int nmult;

        memset(rega, 0, sizeof(rega));
        memset(regb, 0, sizeof(regb));

        if (n % 2 == 0) regb[0] = 1;
        else            rega[0] = 1;
        nmult = 1;

        while (n--) {
            // switch p and q every loop
            // p is multiplier, q is product
            if (n % 2 == 0) {
                p = rega;
                q = regb;
            } else {
                p = regb;
                q = rega;
            }

            memset(q, 0, MAX_SIZE * sizeof(int));

            // multiply
            for (i = 0; i < nbase; i++)
                for (j = 0; j < nmult; j++)
                    q[i + j] += base[i] * p[j];

            nmult += nbase;

            // carry bit
            for (i = 0; i < nmult; i++) {
                if (q[i] > 9) {
                    q[i + 1] += q[i] / 10;
                    q[i]     %= 10;
                }
            }

            for (i = nmult; i > 0 && q[i] == 0; i--);

            nmult = i + 1;
        }

        // print result
        if (nfrac == 0) {
            for (i = nmult - 1; i >= 0; i--) cout << q[i];
        } else if (nfrac < nmult) {
            for (i = nmult - 1; i >= nfrac; i--) cout << q[i];
            cout << '.';
            for (i = nfrac - 1; i >= 0; i--)     cout << q[i];
        } else {
            cout << '.';
            int nzero = nfrac - nmult;
            for (i = 0; i < nzero; i++)      cout << '0';
            for (i = nmult - 1; i >= 0; i--) cout << q[i];
        }
        cout << endl;
    }

    return 0;
}
